// 在这个js中把axios封装一下

// // 引入Axios
import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'

import router from "../router/index.js"

// 从elementui库中只导入message对象
import { Message } from 'element-ui';

// 全局注册
Vue.use(VueAxios, axios)

// 创建一个axios的实例对象
const http = axios.create({
    // baseURL: 'http://www.tostring.com:8080/api/',
    baseURL: 'http://localhost:8080/api/',
    timeout: 1000 * 3, // 发送请求的超时时间
    headers: { // 给请求头中内容
        'Content-Type': 'application/json; charset=utf-8' // 前端传递的数据格式是JSON，编码是utf-8
    }
});

// 添加请求拦截器,在发送请求之前给请起头设置数据
http.interceptors.request.use(function (config) {
    // 发送任何请求都要携带token
    let token = localStorage.getItem("token");
    if (token) {
        config.headers.token = token;
    }
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器，在这里判断如果请求失败就提示用户
http.interceptors.response.use(function (response) {
    if (response.data.code != 200) {
        Message.error(response.data.msg);
    }

    if (response.data.code == 1001 || response.data.code == 1002 || response.data.code == 1003) {
        // token有问题就跳转到登录页面
        router.push("/login");
        return false;
    }

    return response;
}, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
});

export default http;